Digital or mixed signal circuits often include registers for storing operating parameters, instructions and the like. An audio codec is an example of such a circuit. In this context, “audio codec” refers to a coder-decoder circuit for converting between digital audio and an analogue signal, involving at least some hardware functionality (principally, a DAC for D-to-A conversion and an ADC for A-to-D conversion) but possibly also partly implemented in software. Such an audio codec may be employed, for example, in a personal media player. The remainder of this specification will concentrate on the DAC part of an audio codec; however, the invention to be described later can also be applied to the ADC.
FIG. 1 shows where an audio codec 10 fits into a typical personal media player. For simplicity only the playback to headphone channel 146 is shown. More complex systems can also include microphone and speaker connections—the codec can be both a source and destination of digital audio data. Here, a single multimedia and control processor 20 is shown which supplies both digital audio data (via audio interface 142) and commands (via a control interface 124) to the audio codec 10; however, these two functions may be separated by providing a discrete control processor. Henceforth, the term “control processor” or simply “processor” is used to denote either a separate control processor or the combined media/control processor of FIGS. 1 and 2.
Most audio codecs can be configured in many different ways. Configuration is accomplished by sending commands to the codec via the control interface 124. These commands cause particular values to be entered into control registers of the audio codec (as described later), these control registers being referred to in operation of the codec. As an example, a volume level of the analogue signal may be defined by one of the values in the control registers.
As shown in FIG. 1, the audio codec 10 is only one functional block of the overall system making up the personal media player. Other blocks may include, for example, a screen 30, flash memory 32, a hard disk 34, a USB interface 36, SRAM 38 and so on, which as shown in the Figure, are all controlled by the multimedia and control processor 20.
During operation, some of the other blocks may require more urgent attention than the codec, making it difficult to guarantee precise delays between commands sent to the audio codec. Such delays make it difficult to ensure correct operation of the codec. The delays need to be precise because the analogue stages of the codec can contain large capacitors which can take hundreds of ms to reach a suitable voltage to allow the next stage to be powered up. On other occasions the delay between writes needs to be very short to avoid the voltage on a capacitor from decaying such as to cause a pop later when driven back to the correct value.
FIG. 2 shows an alternative system topology where control signals and data are combined onto a single serial interface 144. This is done to reduce the number of device pins required in a package housing the audio codec 10 (and likewise the processor 20). However, in this case there can be even more latency between commands, increasing the likelihood of problems in the codec.
Accordingly, it would be desirable to provide a codec with some means for allowing sequences of precisely timed register writes to be executed.